home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 7 / BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso / Files / Hyper / P / Prog. Notebook Updates.cpt / P.N. Update / card_4623.txt < prev    next >
Text File  |  1988-04-20  |  8KB  |  332 lines

  1. -- card: 4623 from stack: in. Update
  2. -- bmap block id: 4017
  3. -- flags: 0000
  4. -- background id: 3799
  5. -- name: TheIndex
  6. ----- HyperTalk script -----
  7. on openCard
  8.   hide field 1
  9.   hide field 2
  10.   set lockText of card field 1 to true
  11.   set lockText of card field 2 to true
  12. end openCard
  13.  
  14.  
  15.  
  16.  
  17. -- part 1 (field)
  18. -- low flags: 01
  19. -- high flags: 0007
  20. -- rect: left=76 top=96 right=312 bottom=264
  21. -- title width / last selected line: 0
  22. -- icon id / first selected line: 0 / 0
  23. -- text alignment: 0
  24. -- font id: 0
  25. -- text size: 12
  26. -- style flags: 0
  27. -- line height: 16
  28. -- part name: finder
  29. ----- HyperTalk script -----
  30. on mouseUp
  31.   if the selection is empty then
  32.     set lockText of the target to false
  33.     repeat two times
  34.       click at the clickLoc
  35.     end repeat
  36.     put the selection into holder
  37.     get (item 2 of the clickLoc) - (item 2 of (the rect of the target))
  38.     add (the scroll of the target) to it
  39.     put trunc(it / (the textHeight of the target)+0.5) into whichLine
  40.     add 2 to whichLine
  41.     get field keywords of card whichLine
  42.     if (it = holder) then
  43.       -- visual effect wipe right to black
  44.       -- visual effect wipe left
  45.       go card whichLine
  46.     else
  47.       -- visual effect wipe right to black
  48.       -- visual effect wipe left
  49.       find holder in field keywords -- This line is the link
  50.       if the result is not empty then
  51.         answer "No match for keyword " "e& holder"e
  52.         go card 1
  53.       end if
  54.     end if
  55.     click at 0,0 --disable selection
  56.     set lockText of the target to true
  57.   end if
  58. end mouseUp
  59.  
  60.  
  61.  
  62. -- part 27 (button)
  63. -- low flags: 00
  64. -- high flags: 8003
  65. -- rect: left=356 top=75 right=96 bottom=458
  66. -- title width / last selected line: 0
  67. -- icon id / first selected line: 0 / 0
  68. -- text alignment: 1
  69. -- font id: 0
  70. -- text size: 12
  71. -- style flags: 0
  72. -- line height: 16
  73. -- part name: Add Keyword
  74. ----- HyperTalk script -----
  75. on mouseUp
  76.   ask "Enter New Keyword:"
  77.   if it is not empty then
  78.     put it into keyname
  79.  
  80.     -- The following code added 4/19/88 by Richard Clark
  81.     -- Use a binary search to find the appropriate card and
  82.     -- insert it in sorted order
  83.  
  84.     -- (note: this works best if the stack is in sorted order,
  85.     --  however it should still work (after a fashion) if the
  86.     --  stack is not sorted.)
  87.  
  88.     set the lockScreen to true
  89.     put number of cards into upper_bound
  90.     put 2 into lower_bound
  91.  
  92.     repeat
  93.       put trunc((upper_bound + lower_bound) / 2) into probe
  94.       get field keywords of card probe
  95.       if (it = keyname) then
  96.         go card probe
  97.         answer "This card already exists"
  98.         exit mouseUp -- the card already exists
  99.       else if (it > keyname) then
  100.         put probe into upper_bound
  101.       else
  102.         put probe into lower_bound
  103.       end if
  104.       if (upper_bound - lower_bound) <= 1 then
  105.         exit repeat
  106.       end if
  107.     end repeat
  108.  
  109.     -- Adjust the insertion point to the card in front of where
  110.     -- we want to be
  111.  
  112.     repeat while (it < keyname)
  113.       if (probe = number of cards) then exit repeat
  114.       add 1 to probe
  115.       get field keywords of card probe
  116.     end repeat
  117.  
  118.     repeat while (it >= keyname)
  119.       subtract 1 from probe
  120.       get field keywords of card probe
  121.     end repeat
  122.  
  123.     -- and go to that card
  124.     go card probe
  125.  
  126.   else -- the user reports that we aren't in sorted order
  127.     go card 2
  128.   end if
  129.  
  130.   doMenu "New Card"
  131.   set the name of this card to keyname
  132.   put keyname into field keywords
  133.  
  134.   -- Now, update the index (and keep it in sorted order!)
  135.  
  136.   subtract 2 from probe
  137.   get the number of lines in card field 1 of card "TheIndex"
  138.   if (probe > it) then
  139.     subtract it from probe
  140.     put return & keyname after line probe of card field 2 of card "TheIndex"
  141.   else
  142.     put return & keyname after line probe of card field 1 of card "theIndex"
  143.   end if
  144. end mouseUp
  145.  
  146.  
  147.  
  148. -- part 40 (field)
  149. -- low flags: 01
  150. -- high flags: 2007
  151. -- rect: left=269 top=96 right=312 bottom=457
  152. -- title width / last selected line: 0
  153. -- icon id / first selected line: 0 / 0
  154. -- text alignment: 0
  155. -- font id: 0
  156. -- text size: 12
  157. -- style flags: 0
  158. -- line height: 16
  159. -- part name: finder
  160. ----- HyperTalk script -----
  161. on mouseUp
  162.   if the selection is empty then
  163.     set lockText of the target to false
  164.     repeat two times
  165.       click at the clickLoc
  166.     end repeat
  167.     put the selection into holder
  168.     push card
  169.     -- visual effect wipe right to black
  170.     -- visual effect wipe left
  171.     get (item 2 of the clickLoc) - (item 2 of (the rect of the target))
  172.     add (the scroll of the target) to it
  173.     put trunc(it / (the textHeight of the target)+0.5) into whichLine
  174.     add (number of lines in card field 1)+2 to whichLine
  175.     get field keywords of card whichLine
  176.     if (it = holder) then
  177.       go card whichLine
  178.     else
  179.       find holder in field keywords -- This line is the link
  180.       if the result is not empty then
  181.         answer "No match for keyword " "e& holder"e
  182.         pop card
  183.       end if
  184.     end if
  185.     click at 0,0 --disable selection
  186.     set lockText of the target to true
  187.   end if
  188. end mouseUp
  189.  
  190.  
  191.  
  192. -- part 42 (button)
  193. -- low flags: 00
  194. -- high flags: 8003
  195. -- rect: left=76 top=73 right=94 bottom=178
  196. -- title width / last selected line: 0
  197. -- icon id / first selected line: 0 / 0
  198. -- text alignment: 1
  199. -- font id: 0
  200. -- text size: 12
  201. -- style flags: 0
  202. -- line height: 16
  203. -- part name: Re-Index
  204. ----- HyperTalk script -----
  205. on mouseUp
  206.   global holder
  207.   global cardCount, numCards, nextSignal
  208.  
  209.   put the ticks into startTime
  210.   set the LockScreen to true
  211.   put empty into card field 1
  212.   put empty into card field 2
  213.   set the cursor to 4
  214.  
  215.   play boing c5
  216.   put "Sorting Reference Cards . . . Please Wait" into message
  217.   sort text by field 2
  218.  
  219.   play boing d4
  220.   put "Getting Keywords . . . Please Wait" into message
  221.  
  222.   put number of cards into x
  223.   put x into numCards
  224.   -- If we have 13 or fewer cards, put all of them into the first
  225.   -- index column
  226.   if (numCards > 13) then
  227.     put trunc(x/2 + 0.5) into a -- round up
  228.   else
  229.     put numCards into a
  230.   end if
  231.   put 25 into nextSignal
  232.   put empty into holder
  233.  
  234.   repeat with cardCount = 3 to a
  235.     get field 2 of card cardCount
  236.     put it & return after holder
  237.     if (cardCount >= nextSignal) then
  238.       updateCount
  239.       fixHolder
  240.       put holder after card field 1
  241.       put empty into holder
  242.     end if
  243.   end repeat
  244.  
  245.   fixHolder
  246.   put holder after card field 1
  247.   put empty into holder
  248.  
  249.   repeat with cardCount = a+1 to numCards
  250.     get field 2 of card cardCount
  251.     put it & return after holder
  252.     if (cardCount >= nextSignal) then
  253.       updateCount
  254.       fixHolder
  255.       put holder after card field 2
  256.       put empty into holder
  257.     end if
  258.   end repeat
  259.  
  260.   fixHolder
  261.   put holder after card field 2
  262.  
  263.   go card 1
  264.   put "Compacting Stack . . . Please Wait" into message
  265.   -- doMenu "Compact Stack"
  266.  
  267.   put trunc((the ticks - startTime) / 60 + 0.5) into seconds
  268.   if seconds < 60 then
  269.     put "Done in" && seconds && "seconds" into message
  270.   else
  271.     put "Done in" && trunc(seconds / 60) && "minutes and " && (seconds mod 60) && "seconds" into message
  272.   end if
  273.  
  274.   -- wait 2 seconds
  275.   -- hide message
  276. end mouseUp
  277.  
  278.  
  279. on fixHolder
  280.   -- Remove any blank lines from the index listing
  281.   global holder
  282.  
  283.   repeat with l = 1 to number of lines in holder
  284.     if (line l of holder is empty) then
  285.       delete line l of holder
  286.     end if
  287.   end repeat
  288. end fixHolder
  289.  
  290.  
  291. on updateCount
  292.   -- Update the displayed count and set up for the next update
  293.   global cardCount, numCards, nextSignal
  294.  
  295.   put cardCount && "cards processed (out of" && numCards & ")" into message
  296.   add 25 to nextSignal
  297. end updateCount
  298.  
  299.  
  300.  
  301.  
  302. -- part contents for background part 1
  303. ----- text -----
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319. -- part contents for background part 41
  320. ----- text -----
  321. What links to Patrick?
  322.  
  323. -- part contents for card part 1
  324. ----- text -----
  325.   Read Me First!
  326.  Improvements‚Ķ
  327. "Add Keywords"
  328. Cross-Referencing
  329. Installation
  330. Re-Indexing
  331. The Index Card
  332.